ARexx Unterstützung für

Dokumentation zur Version 1.0

Georg Heßmann

       hessmann@unipas.fmi.uni-passau.de

Martin Bokämper Reuthstraße 12, 91099 Poxdorf

     mnbokaem@cip.e-technik.uni-erlangen.de
             mab@ame.ZER (Zerberus)

Jörg Höhle

              hoehle@cs.uni-sb.de
            Joerg Hoehle@saarag.zer

Ulrich Wisser Heerstraße 125, 53111 Bonn

20. Januar 1994

Zusammenfassung

Mit Hilfe der hier beschriebenen ARexx-Makros können für die Treiber des PasTEX Pakets fehlende pk-Fonts automatisch generiert werden. Die Treiberprogramme ShowDVI, DVIPrint und DVIPS werten alle die Umgebungsvariable CALLMF aus. Ihr Inhalt wird als Name eines ARexx-Makros interpretiert, das dann fehlende Vergrößerungsstufen erzeugt. MakeBatch oder MakeTeXFont sind solche Makros. Dieser Text entält eine Beschreibung der Installation und Anwendung.

Inhaltsverzeichnis

1 Copyright 3

2 Systemvoraussetzungen 3

3 Änderungen in der neuen Version 4

4 Installation 4 4.1 Beschreibung der Dateien . . . . . . . . . . . . . . . . . . . . . . 4 4.2 Einfache Installation . . . . . . . . . . . . . . . . . . . . . . . . . 4 4.3 Empfohlene Installation . . . . . . . . . . . . . . . . . . . . . . . 5 4.4 Installation der neuen Version . . . . . . . . . . . . . . . . . . . . 5 4.5 Benutzeranpassung . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4.5.1 MakeBatch . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4.5.2 MakeTeXFont . . . . . . . . . . . . . . . . . . . . . . . . . 6 4.5.3 MakeTeXFontSet . . . . . . . . . . . . . . . . . . . . . . . 7

5 Beschreibung der Makros 8

5.1 MakeBatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5.1.1 DVIPS und MakeBatch . . . . . . . . . . . . . . . . . . . . 8 5.1.2 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

5.2 MakeTeXFont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.2.1 Logdatei . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.2.2 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5.3 MakeTeXFontSet . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 5.3.1 ShowDVI — DPI Auflösungen . . . . . . . . . . . . . . . . 10 5.3.2 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

6 Umgebungsvariablen 11

1 Copyright

Alle hier beschriebenen Makros wurden von den Autoren Georg Heßmann, Martin Bokämper, Jörg Höhle und Ulrich Wisser als PUBLIC DOMAIN freigegeben.^{1} Das heißt, daß wir auf alle Rechte an diesen Makros verzichtet haben.

Wir hoffen, daß Benutzer von PasTEX, und ARexx die bisherigen Makros erweitern und verbessern werden.

Bitte schicken Sie alle Meldungen über Fehler, Wünsche und Ideen an:

Georg Heßmann

     hessmann@unipas.fmi.uni-passau.de

Martin Bokämper Reuthstraße 12, 91099 Poxdorf

     mnbokaem@cip.e-technik.uni-erlangen.de
     mab@ame.ZER

Jörg Höhle

     hoehle@cs.uni-sb.de oder Joerg Hoehle@SAARAG.ZER

Ulrich Wisser Heerstraße 125, 53111 Bonn

Hinweis: Die Autoren haften nicht für irgendwelche Schäden, die aus der Benutzung oder einer wie auch immer gearteten Anwendung der Makros entsteht. Die Autoren garantieren nicht für das ordnungsgemäße Funktionieren oder überhaupt für irgendeine Funktion der Makros.

JEDE HAFTUNG DER AUTOREN IST AUSGESCHLOSSEN!!

2 Systemvoraussetzungen

Sie brauchen unbedingt das Programmpaket ARexx von William S. Hawes. In der Workbench 2.0 ist das Paket bereits enthalten. Alle anderen können es über den Fachhandel beziehen. Das Programm ist nicht Public Domain.

Wenn Ihr System die Anforderungen von PasTEX und erfüllt, brauchen Sie zusätzlich nur noch viel Speicher, damit Sie mehrere Programme gleichzeitig laufen lassen können. Für PasTEX, ShowDVI und einen Editor kommen Sie mit 3 MB aus. Soll dagegen noch DVIPrint oder oder gar beides gleichzeitig laufen, müssen Sie über mindestens 6 MB Speicher verfügen.

1Bitte beachten: Nur die Makros sind PD, nicht aber der Rest von PasTEX!

3 Änderungen in der neuen Version

MakeBatch übernimmt das Font-Caching für DVIPS.^{2} MakeTeXFont erzeugt eine lesbarere Logdatei und macht darin pro Font und

Auflösung nur noch einen Eintrag. Die Erkennung der Vergrößerungsstufen (magstep) wurde verbessert und arbeitet jetzt fehlerfrei.

MakeTeXFontSet ist neu. Es wird für einen Font ein kompletter Satz an Vergrößerungsstufen erstellt.

4 Installation

4.1 Beschreibung der Dateien

• doc/MFRexx.tex diese Datei.

• rexx/MakeBatch.rexx erzeugt eine AmigaDOS Script Datei, mit der fehlende Fontgrößen erzeugt werden können.

• rexx/MakeTeXFont.rexx erzeugt fehlende Fontgrößen.

• rexx/MakeTeXFontSet.rexx erzeugt für einen Font alle ”normalen“ Größen für eine beliebige Anzahl an Geräten.

• inputs/PasTeX-modes.mf Datei mit mode Einstellungen für .

• inputs/White setup.mf Anpassung für weiß schreibende Laserdrucker.

• config/modes zu inputs/PasTeX-modes.mf passende mode Datei.

4.2 Einfache Installation

1. Die Datei modes nach MF:config kopieren und an die lokale - Installation anpassen, oder das mitgelieferte PasTeX-modes.mf verwenden. In diesem Fall #?.mf nach MF:inputs/ kopieren und nicht vergessen, mittels IniMF eine neue plain.base Datei zu generieren.

2. Die beiden Makros MakeBatch.rexx und MakeTeXFont.rexx ins Rexx:

Verzeichnis kopieren.

3. Die Environmentvariable CALLMF auf MakeBatch oder MakeTeXFont setzen.

4. Wenn Sie DVIPS benutzen, führen Sie unbedingt die unter 4.5.1 Seite 5 beschriebenen Änderungen durch.

2Vorerst werden leider noch keine Fontlibs unterstützt.

4.3 Empfohlene Installation

1. Die Datei modes nach MF:config kopieren und an die lokale - Installation anpassen, oder das mitgelieferte PasTeX-modes.mf verwenden. In diesem Fall #?.mf nach MF:inputs/ kopieren und nicht vergessen, mittels IniMF eine neue plain.base Datei zu generieren.

  2. Die beiden Makros MakeBatch.rexx und MakeTeXFont.rexx ins MF:Rexx

Verzeichnis kopieren.

3. Die Environmentvariable CALLMF entweder auf MF:Rexx/MakeBatch oder MF:Rexx/MakeTeXFont setzen. Dabei wird empfohlen, MakeBatch zu benutzen. Es treten dann kaum Speicherprobleme auf (ShowDVI, und ein Editor laufen erst ab mindestens 3 MB Speicher gleichzeitig). Wenn Sie DVIPS benutzen, wird MakeBatch dringend empfohlen, da nur dieses Makro das fehlende Font-Caching erstetzt.

4. Die unter 4.5.1 auf Seite 5 beschriebenen Änderungen durchführen.

4.4 Installation der neuen Version

Kopieren Sie einfach die neuen Dateien in das Verzeichnis, in dem auch schon Ihre alten Dateien stehen. Führen Sie unbedingt die unter 4.5.1 Seite 5 beschriebenen Änderungen durch.

4.5 Benutzeranpassung

Dieses Kapitel ist nur für Leser mit guter Kenntnis der Makros und ausreichend Erfahrung in der ARexx-Programmierung gedacht.

4.5.1 MakeBatch

Wenn Sie die Datei MakeTeXFont.rexx nicht nach Rexx:, sondern nach MF:Rexx kopiert haben, müssen Sie unbedingt in MakeBatch.rexx den Eintrag

                   MakeTeXFont = "MakeTeXFont";

ändern in

               MakeTeXFont = "MF:Rexx/MakeTeXFont";

MakeBatch muß in jedem Fall an Ihr System angepaßt werden, wenn Sie DVIPS benutzen. In der Version 5.47 übergibt DVIPS leider falsche Parameter. Als pk-Verzeichnis wird immer TeX:pk/ übergeben, der pk-Name wird immer nach der Standardeinstellung

                     <dpi^{>}/^{<}fontname^{>}.^{<}dpi^{>}pk

gebildet. Auch alle anderen Einstellungen aus config.ps bleiben unberücksichtigt. Haben Sie Ihr System anders installiert, müssen Sie den Eintrag

                     dvipspkdir = "TeX:pk/";

an Ihre Installation anpassen.

ACHTUNG! Dieser Eintrag muß mit einem : oder einem / enden. Sollten Sie auch Ihre Fontnamen nach einem anderen System bilden, müssen Sie MakeBatch teilweise selbst programmieren, da hierfür noch keine Routinen zur Verfügung stehen.

Alle anderen Anwender müssen MakeBatch nur ändern, wenn Ihnen die beiden folgenden Einträge nicht gefallen. Das Verzeichnis MF: sollte in Ihrem System ja existieren und daher sind auch keine Schwierigkeiten mit dem Eintrag

                 batchname = "mf:MakeTeXFont.sh";

zu erwarten.

Sollten Sie Ihre Datei FontVols in einem anderen Verzeichnis haben, etwa in TeX:pk, so denken Sie bitte erst über eine Verlegung nach. Sowohl ShowDVI als auch DVIPrint suchen zuerst unter TeX:config nach dieser Datei, das spart immerhin einige Sekunden. Ansonsten ändern Sie den Eintrag

              fontfilename = "TeX:config/fontvols";

nach Ihren Wünschen.

4.5.2 MakeTeXFont

Die folgenden Pfade und Dateinamen sind in MakeTeXFont festgelegt:

   logdir       = "MF:log"
   logname      = logdir"/MakeTeXFont.log"
   pkdir        = "TeX:pk/"
   modefilename = "MF:config/modes"
   textfm       = "TeX:fonts/"
   virmf        = "MF:bin/virmf"
   gftopk       = "MF:bin/gftopk"
   fontfilename = "TeX:config/fontvols"

Ist Ihr TEX-System anders installiert oder befinden sich die Programme in anderen Pfaden, so ändern Sie bitte nur diese Einträge in MakeTeXFont.

Wenn Sie von Zeit zu Zeit alle Ihre pk-Dateien von der Festplatte löschen, sollten Sie vorher eine Kopie der neu erstellten Fonts auf Diskette machen.^{3} Dies kann wesentlich erleichtert werden, wenn alle neuen Fonts zentral gesammelt werden.

Wenn Sie in den folgende Zeilen in MakeTeXFont

   /*
   If ~Exists(MODE) Then Do
     If ~MakeDir(MODE) Then Do
       Call Log("makedir "MODE" failed!");
     End;
   End;
   If ~Exists(MODE'/'DPI) Then Do

3Siehe dazu auch ShowDVI-Anleitung.

If ~MakeDir(MODE'/'DPI) Then Do
  Call Log("makedir "MODE"/"DPI" failed!");
End;
End;
If Exists(MODE) Then Copy FNTNAME'.'DPI'PK' MODE'/'PKFILENAME
*/

die Kommentarklammern (/∗ und ∗/) entfernen, wird in MF: ein Verzeichnis mit dem Namen des modes angelegt und der neue Font dorthin kopiert.^{4}

4.5.3 MakeTeXFontSet

1. Das Makro verwendet nur zwei fest vorgegebene Namen (inklusive Pfad), nämlich

modefilename = "MF:config/modes";
batchname = "MF:MakeTeXFont.sh";

Diese können Sie nach belieben auf eigene Namen und Pfade umstellen, mit der Voraussetzung, daß die Pfade auch wirklich existieren und die Datei modefilename auch existiert und den unter 5.2 Seite 9 beschriebenen Anforderungen genügt.

2. Wenn Sie andere Auflösungen erzeugen lassen wollen, müssen Sie im Quelltext des Makros Änderungen vornehmen. Dazu sollten Sie mit der Benutzung des Makros vertraut sein und den Quelltext einigermaßen kennen. Tragen Sie die gewünschte Auflösung in das Feld magmult ein. ACHTUNG! Jetzt müssen Sie auch das Feld SDVI ändern.

magmult besteht aus zwei Einträgen, nämlich magmult.num.i, worin der Zahlenwert der Vergrößerungsstufe steht und magmult.str.i, worin der magstep der Vergrößerungsstufe steht. magmult.0 enthält die Anzahl der eingetragenen Vergrößerungsstufen.

SDVI besteht aus mehreren Einträgen.

SDVI.pkdir  Verzeichnis für pk-Dateien.^{5}
SDVI.ModesAnz Anzahl der Grundauflösungen für ShowDVI.
SDVI.i.name Name des modes (für )
SDVI.i.xdpi  Horizontale Auflösung.
SDVI.i.ydpi  Vertikale Auflösung.
SDVI.i.Mag.Anz Anzahl der zu erzeugenden Auflösungen.

     SDVI.i.Mag.j Index zu magmult (SDVI.i.Mag.j=1

erzeugt zum Beispiel magmult.1)

4Von Zeit zu Zeit sollten Sie dann aber wirklich alle neuen Fonts auf Diskette kopieren, da sonst ziemlich viel Platz auf der Festplatte verloren geht.

5Unbedingt abschließenden : oder / angeben.

5 Beschreibung der Makros

5.1 MakeBatch

MakeBatch benötigt die gleichen Parameter wie MakeTeXFont, es generiert die Fonts allerdings nicht sofort, sondern schreibt nur Aufrufe von MakeTeXFont in eine Batchdatei mit dem Namen MakeTeXFont.sh, die dann so aussehen kann:

     rx MakeTeXFont cmr10 91 91 91 show 91/cmr10.91pk TeX:pk/
  rx MakeTeXFont cmr10 100 100 100 show 100/cmr10.100pk TeX:pk/
  rx MakeTeXFont cmr10 120 100 100 show 120/cmr10.120pk TeX:pk/

Dieses File kann später einfach mit execute ausgeführt werden. Das ist sinnvoll wenn zum Beispiel viele Fonts erzeugt werden sollen und man in ShowDVI nicht darauf warten will, oder wenn sonst Speicherprobleme auftreten.

MakeBatch trägt keine Fonts doppelt ein! Es macht also nichts, sich in ShowDVI mehrere Files, in denen möglicherweise dieselben Fonts fehlen, anzeigen zu lassen.

5.1.1 DVIPS und MakeBatch

MakeBatch hat eine besondere Routine zur Unterstützung von DVIPS. Da aber DVIPS^{6} keine eigene Routine für das Font-Caching hat und bei jedem nicht gefundenen Font sofort ARexx startet, übernimmt nun MakeBatch das Font-Caching. Allerdings werden leider noch keine Fontlibs^{7} unterstützt.

Leider hat sich bei der Version 5.47 von DVIPS noch ein Fehler in die ARexx-Schnittstelle eingeschlichen. Es wird immer TeX:pk als pk-Verzeichnis übergeben. Haben Sie Ihr System anders eingerichtet, muß MakeBatch.rexx geändert werden.^{8} Außerdem wird der pk-Name immer nach der Standardeinstellung erzeugt, etwaige Eingaben in config.ps bleiben unberücksichtigt. Sollten Sie andere Namen als ^{<}dpi^{>}/^{<}fontname^{>}.^{<}dpi^{>}pk benutzen, so müssen Sie leider MakeBatch teilweise selbst programmieren.^{9}

5.1.2 Probleme

Bei sehr vielen Einträgen in die MakeTeXFont.sh-Datei wird MakeBatch sehr langsam, das heißt es braucht circa eine Minute pro Eintrag. Da dann allerdings auch schon über 100 Aufrufe von MakeTeXFont.rexx eingetragen sind und diese im Durchschnitt über 30 Minuten dauern, dürfte der Zeitverlust zu verkraften sein.

6Version 5.47.

7Wie geht das aus ARexx heraus. Hilfe sehr willkommen.

8Siehe 4.5.1 Seite 5.

9Siehe 4.5.1 Seite 5.

5.2 MakeTeXFont

MakeTeXFont übernimmt die eigentliche Erzeugung von neuen Fonts. Als Parameter werden benötigt:

font  Name des Fonts (zum Beispiel cmr10)
dpi  Größe des zu erzeugenden Fonts (zum Beispiel 360) in dpi
hbasedpi  Die horizontale Grundauflösung für das Gerät, für das der

Font erzeugt wird.

vbasedpi  Die vertikale Grundauflösung des Geräts.
drivertype Name des aufrufenden Programs (ab Version 1.09)
pkfilename Filename, den der Font bekommen soll. Als Pfad wird noch

das pkdir vorangestellt. (ab Version 1.09)

pkdir  Das Verzeichnis, in dem der Font generiert werden soll. Dies

muß ein vollständiger Pfad mit ’/’ oder ’:’ als letztem Zeichen sein! (zum Beispiel TeX:pk/) (ab Version 1.10)

Per Hand kann man zum Beispiel mit dem Kommando

 rx MakeTeXFont cminch 120 100 100 show 120/cminch.120pk ram:pk/

den Font cminch für den Previewer (100 dpi Grundauflösung) mit magstep 1 erzeugen. Der erzeugte Font wird unter ram:pk/120/cminch.120pk abgespeichert. Das Verzeichnis RAM:pk muß bereits existieren! Das Unterverzeichnis RAM:pk/120 wird automatisch erzeugt.

Im allgemeinen braucht man sich aber nicht um diese Details zu kümmern, da üblicherweise MakeTeXFont direkt von ShowDVI oder DVIPrint oder über ein automatisch erzeugtes Batchfile mit allen Parametern aufgerufen wird.

MakeTeXFont führt dann folgende Operationen durch:

• umwandeln der Parameter für

• Aufrufen von

• Aufruf von GFtoPK

• Kopieren in das entsprechende Verzeichnis

• Archivieren der -Logdatei

• Eintrag in eigene Logdatei

5.2.1 Logdatei

MakeTeXFont benennt die von erzeugte Logdatei um. Aus dem von

erzeugten Namen ^{<}Fontname^{>}.log wird ^{<}Fontname^{>}.^{<}DPI^{>}log.

War die Compilierung erfolgreich, wird die Datei in das Verzeichnis MF:log kopiert. Zusätzlich erzeugt MakeTeXFont noch eine eigene Logdatei, in die entweder der Fehler oder die Dauer der erfolgreichen Compilierung eingetragen wird. Jede Zeile enthält dabei Datum und Uhrzeit der Eintragung, DPI, Vergrößerung und Grundauflösung des Geräts.

5.2.2 Probleme

Bei MakeTeXFont kann es leicht zu Speicherknappheit kommen, wenn noch andere Programme laufen (DVIPrint braucht zum Beispiel ebenfalls viel Speicher). Wenn also bei dem automatischen Aufruf aus anderen Programmen zu Problemen kommt, sollte man MakeBatch benutzen.

5.3 MakeTeXFontSet

MakeTeXFontSet erzeugt für einen Font die notwendigen pk-Dateien in den Auflösungen \magstep 0, 0.5, 1, 2, 3, 4, 5. Das heißt für jeden Font wird sieben mal aufgerufen. Für ShowDVI wird dabei eine extra Behandlung vorgenommen, da dieses Gerät mehrere Auflösungen beherrscht und diese sich teilweise in den DPI-Größen überschneiden. Für ShowDVI wird genau 22 (zweiundzwanzig) mal aufgerufen.

MakeTeXFontSet benutzt ebenfalls die Datei MF:MakeTeXFont.sh.^{10} Allerdings wird nicht MakeBatch aufgerufen, sondern die Einträge direkt in die Datei geschrieben.

5.3.1 ShowDVI — DPI Auflösungen

Die folgenden DPI-Größen benutzt ShowDVI. Die Spalten geben die Grundauflösung an.

DPI Grundauflösungen

magstep 44 83 91 100 120
0  44 83 91 100 120
0.5  48 91 100 110 131
1  53 100 109 120 144
2  63 120 131 144 173
3  76 143 157 173 207
4  91 172 189 207 249
5  109 207 226 249 299

Von diesen 35 Einträgen überschneiden sich aber einige in der DPI-Größe. Deshalb werden nur folgende 22 Größen wirklich berechnet:

10Siehe 5.1 Seite 8.

DPI Grundauflösungen

magstep 44 83 91 100 120
0  44 83 91 100 120
0.5  48  110 131
1  53  109  144
2  63  173
3  76 143 157  207
4  172 189  249
5  226  299

5.3.2 Probleme

Vor einer Benutzung dieses Makros kann nur gewarnt werden!! Wenn immer möglich besorgen Sie sich die pk-Dateien aus anderen Quellen.^{11} Sie müssen für jeden -Aufruf mit durchschnittlich 30 Minuten rechnen. Versuchen Sie also niemals, alle Computer Modern Fonts oder ähnliche auf einmal zu erzeugen.

6 Umgebungsvariablen

Diese Makros benutzen keine eigenen Umgebungsvariablen. Die einzige hier benutzte Umgebungsvariable ist CALLMF. Diese wird von ShowDVI, DVIPrint und DVIPS ausgewertet. Ihr Inhalt wird als Name eines ARexx-Makros zur Fonterzeugung interpretiert. Mögliche Einträge wären MakeTeXFont.rexx oder

MakeBatch.rexx, nicht aber MakeTeXFontSet.rexx.

11DANTE e.V. unterhält einen ftp-Server in Stuttgart (rusmv1.rus.uni-stuttgart.de 129.69.8.13).